Static file system differencing and updating

ABSTRACT

Systems and methods are provided for static file system (SFS) differencing and updating. The differencing and updating includes portion-level differencing and block-level updating of units of an original image (referred to as blocks). The differencing and updating splits SFS images into portions based on block information and the image structure. A delta file is generated for each portion (portion-level differencing) of the new SFS image; the delta file includes information of differences between the portion of the new SFS image and the portion of the original SFS image to which the new SFS image portion corresponds. The delta files are transferred to a device where the target SFS image of the device is updated block-by-block using information of the delta files. The block-by-block update reconstructs all portions of the new SFS image in a device block in host device RAM and writes the reconstructed block into host device ROM.

RELATED APPLICATION

This application claims the benefit of U.S. Patent Application Nos.60/626,252, 60/626,292, and 60/626,293, all filed Nov. 8, 2004. Thisapplication is related to U.S. Patent Application Nos. (number not yetassigned; attorney docket number DOGO.P020; entitled “UpdatingCompressed Read-Only Memory File System (CRAMFS) Images”) and (numbernot yet assigned; attorney docket number DOGO.P021; entitled“Reorganizing Images in Static File System Differencing and Updating”),both filed Nov. 8, 2005.

TECHNICAL FIELD

The disclosed embodiments relate to updating static file system imagesusing difference files.

BACKGROUND

Software running on a processor, microprocessor, and/or processing unitto provide certain functionality often changes over time and alsoincreases in complexity. The changes can result from the need to correctbugs, or errors, in the software files, adapt to evolving technologies,or add new features, to name a few. In particular, software hosted onmobile processing devices, for example mobile wireless devices, oftenincludes numerous software bugs that require correction. Softwareincludes one or more computer programs, algorithms, files, and/or codepertaining to operation of the host device. Software can be divided intosmaller units that are referred to as modules or components.

Portable processor-based devices like mobile processing devicestypically include a real-time operating system (RTOS) in which allsoftware components of the device are linked as a single largeexecutable image. Further, file system support has become commonrecently due to the availability of compact storage and more demandingfunctionalities in these mobile wireless devices. In addition, thesingle large image needs to be preloaded, or embedded, into the deviceusing a slow communication link like a radio, infrared, or serial link.

Obstacles to updating the software of mobile processing devices includethe time, bandwidth, and cost associated with delivering the updatedfile to the device, as well as limited resources of the device availablefor use in updating new files once received. As one example, static filesystem images are required to be updated in-place (e.g., in read-onlymemory (ROM)) because of resource limitations (e.g., limitationsrelating to RAM, ROM, time for downloading the image, power consumption,etc) of the host device. Consequently, there is a need for generatingdifference files that are sized appropriately for efficient transfer tohost devices and for use in updating software of resource-limiteddevices.

INCORPORATION BY REFERENCE

Each publication, patent, and/or patent application mentioned in thisspecification is herein incorporated by reference in its entirety to thesame extent as if each individual publication and/or patent applicationwas specifically and individually indicated to be incorporated byreference.

BRIEF DESCRIPTION OF THE FIGURES

FIG. 1 is a block diagram of a static file system (SFS) differencingsystem, under an embodiment.

FIG. 2 is a flow diagram for SFS differencing, under an embodiment.

FIG. 3 is a flow diagram for SFS differencing, under another embodiment.

FIG. 4 is an example SFS image following splitting of the image blocksinto portions, under an embodiment.

FIG. 5 is a block diagram of an SFS differencing and updating system,under an embodiment.

FIG. 6 is a flow diagram for SFS updating, under an embodiment.

FIG. 7 is a flow diagram for in-place updating of SFS images in devices,under an embodiment.

In the drawings, the same reference numbers identify identical orsubstantially similar elements or acts. To easily identify thediscussion of any particular element or act, the most significant digitor digits in a reference number refer to the Figure number in which thatelement is first introduced (e.g., element 100 is first introduced anddiscussed with respect to FIG. 1).

DETAILED DESCRIPTION

Systems and methods are provided for static file system (SFS)differencing and updating. The systems and methods for SFS differencingand updating include portion-level differencing and block-level updatingof update units of an original image (referred to as device blocks orblocks) as described below. The differencing and updating of anembodiment splits SFS images into a series of portions based on blockinformation and the SFS image structure. A delta file is generated foreach portion (portion-level differencing) of the new SFS image, and thedelta file includes information of differences between the portion ofthe new SFS image and the portion(s) of the original SFS image to whichthe new SFS image portion corresponds (a new portion can depend on morethan one original portion, and in addition, the original portion(s)might not be in the same location as the new portion). The delta filesare transferred to a device for use in updating images of the device tothe new SFS image. The target SFS image of the device is updatedblock-by-block using information of the delta files. The block-by-blockupdate of an embodiment reconstructs all portions of the new SFS imagein a device block in random access memory (RAM) of the host device andthen writes the reconstructed block into ROM of the host device.

A SFS, also referred to as a read-only file system, is a file systemthat can not be modified during run time. Examples of SFSs include butare not limited to the Symbian Z drive (also referred to as the “ROMdrive”), the Linux compressed ROM file system (CRAMFS), the encryptedfile systems, and file systems that might store operating systemexecutables, built-in applications, essential multimedia information,and default language files, to name a few.

The SFS differencing and updating of embodiments described belowreceives images of a static file system. The images, which include anoriginal image and a new image, each include a number of blocks, forexample super blocks, data blocks, etc. The SFS differencing splits theimages by using information of the blocks to split the images intomultiple portions. Differences are determined between content of theimages by determining differences between the portions of the originalimage and the new image, where the differences are generated for eachportion of the new image. The differences include byte-level differencesbetween the portions, but are not so limited. A delta file is generatedthat includes the differences for each portion of the new image.

The SFS differencing and updating of embodiments includes updating bywhich the SFS of an image hosted on a portable device is updatedin-place on the portable device. The updating receives the delta file ata portable device via at least one coupling. Dependent ones of theoriginal portions hosted on the portable device are assembled, and atleast one of the is identified that corresponds to the delta filereceived, where the new portion location in ROM is encoded in the SFSdelta package associated with its corresponding delta file in anembodiment. The updating reconstructs at least one new portion on theportable device that corresponds to the delta file identified. Thereconstructed new portions of the new image are written to the read-onlymemory (ROM) of the portable device.

In the following description, numerous specific details are introducedto provide a thorough understanding of, and enabling description for,embodiments of the SFS differencing and updating. One skilled in therelevant art, however, will recognize that the SFS differencing andupdating can be practiced without one or more of the specific details,or with other components, systems, etc. In other instances, well-knownstructures or operations are not shown, or are not described in detail,to avoid obscuring aspects of the SFS differencing and updating.

FIG. 1 is a block diagram of a SFS differencing system 100, under anembodiment. The SFS differencing system includes an image processingmodule 102, a dependency generation module 104, a difference engine ormodule 106, and a packaging engine or module 108, but is not so limited.The dependency generation module 104 of an embodiment is coupled to theimage processing module 102. The difference engine 106 of an embodimentis coupled to the dependency generation module 104. The packaging engine108 of an embodiment is coupled to the difference engine 106.

The SFS differencing system 100 of an embodiment couples amongcomponents of a host computer system (not shown), where the componentscan include at least one of a processor, a controller, a memory device,and/or a bus, but are not so limited. One or more of the components ormodules 102-108 of the SFS differencing system 100 run under control ofat least one algorithm, program, or routine. A host computer systemprocessor couples among the components of the host computer system andthe components 102-108 of the SFS differencing system 100 under programcontrol. While the image processing module 102, dependency generationmodule 104, difference engine 106, and packaging engine 108 are shown asseparate blocks, some or all of these blocks 102-108 can bemonolithically integrated onto a single chip, distributed among a numberof chips or components of a host system, and/or provided by one or somecombination of programs or algorithms. The programs or algorithms whenpresent can be implemented in software algorithm(s), firmware, hardware,and any combination of software, firmware, and hardware.

The term “module” as generally used herein refers to a logicallyseparable part of a program, and is interchangeable with one or moreterms including software, algorithm, program, component, and unit. Theterm “component” as generally used herein refers to one or more of theparts that make up a system; a component may be software and/or hardwareand may be subdivided into other components. The terms “module”,“component”, and “unit” may be used interchangeably or defined to besubelements of one another in different ways depending on the context.The term “processor” as generally used herein refers to any logicprocessing unit, such as one or more central processing units (CPUs),digital signal processors (DSPs), application-specific integratedcircuits (ASIC), etc.

In operation the SFS differencing system 100 receives at least oneoriginal SFS image 112 and at least one new SFS image 114 and performsportion-level differencing to generate one or more delta files asdescribed below. The delta files are assembled into a delta package 122for transfer to a portable or mobile device, also referred to as aclient device. These differences include byte-level differences betweenone or more portions of blocks of the compared images, but are not solimited. The SFS differencing system 100 generates the delta file in aprocessor-based or computer system or running under a processor-based orcomputer system. The computer system on which or under which the SFSdifferencing system runs includes any collection of computing componentsand devices operating together, as is known in the art. The computersystem can also be a component or subsystem within a larger computersystem or network.

Contents of the delta file provide an efficient representation of thedifferences between the original image 112 and the new image 114. Thedelta file can include meta-data along with actual data of replacementand/or insertion operations that represent the differences between thenew or current version of the associated file and previous versions ofthe file, as described in the U.S. Pat. No. 6,925,467 issued to InnoPathSoftware, Inc. of Sunnyvale, Calif. on Aug. 2, 2005. The SFSdifferencing system 100 provides any differences between the originalimage 112 and the new image 114 in delta files of the delta package 122using a minimum number of bytes and a pre-defined format or protocol,thereby providing a delta file optimized in space.

The SFS differencing system 100 performs portion-level differencing, andFIG. 2 is a flow diagram for SFS differencing 200, under an embodiment.The SFS differencing is performed, for example, using the SFSdifferencing system 100 described above and elsewhere herein. The SFSdifferencing 200 receives 202 images of a static file system. The imagesinclude an original image and a new image, but are not so limited. Eachimage also includes a number of blocks, for example super blocks, datablocks, etc. The blocks are of a pre-specified size (e.g., 64 KB, 128KB, etc.) but are not so limited. The blocks of the received images aresplit 204 into a number of portions using information of the blocks forexample. The SFS differencing 200 determines 206 differences betweencontent of the images by determining differences between the portions ofeach of the original image and the new image. A delta file is generated208 that includes information of the differences in content or databetween each portion of the new image and one or more aligned portionsof the original image.

As another example, FIG. 3 is a flow diagram for SFS differencing 300,under an embodiment. The SFS differencing 300 receives 302 images of astatic file system, as described above with reference to FIG. 2. Thereceived original image is divided 304 into one or more originalsections or portions, and the received new image is divided 304 into oneor more new sections or portions. The SFS differencing identifies 306dependency alignments between the original sections and the newsections. A delta file is generated 308 for at least one of the newsections. The delta file includes but is not limited to differencesbetween a new section and one or more original section(s), where the newsection depends on the original section(s). The delta files ofalternative embodiments may include differences between at least one newsection and at least one original section on which the new sectionsdepend.

The image processing module 102, as described above with reference toFIG. 1, receives each of an original SFS image 112 and a new SFS image114. The image processing module 102 of an embodiment operates to beginthe portion-level differencing of the received images by parsing thespecific image area and extracting information of the images. Theinformation extracted about the images is used in differencing andupdating operations. This parsing includes decoding the information ofthe static file system structure and internal format to get relatedinformation for use in performing SFS image differencing and updating.The information resulting from the parsing includes, but is not limitedto, the locations and sizes of blocks of the image (e.g., super blocks,data blocks, etc.), the compression library used (if compressed), thetype of encryption used to encrypt the image (e.g., encryptionalgorithm, encryption key, etc.) (if encrypted), to name a few.

Based on the target device block information, the image processingmodule 102 divides or splits the SFS image into a number or series ofportions. FIG. 4 is an example SFS image 400 following splitting intoportions 402 by the image processing module 102, under an embodiment.The portions 402 include portions or parts of a block (e.g., “Block 4”)of the image but are not so limited. For example, following splitting ofan embodiment Block 2 includes portions 402-2 a, 402-2 b, and 402-2 c,and Block 4 includes portions 402-4 a and 402-4 b. Following thesplitting operation a block may contain any number of portions asappropriate to the data content of the block and/or the specificstructure of the SFS image. The portions include for example a superblock/header portion, a control meta-data portion, a file portion, etc.The SFS image processing module 102 may perform decompression (when theimage is compressed), decryption (when the image is encrypted) and/orany other processing needed in order for the image processing module 102to extract data from the received image.

The image processing module 102 of an embodiment also outputs a filewhich includes mapping information like the SFS image/file name and oneor more locations of the SFS image/file name, for example. This file isreferred to herein as a hint file but is not so limited.

The dependency generation module 104, also referred to herein as adependency analysis module or dependency generator, determines orgenerates a mapping or alignment between the original images and the newimages. The alignment includes information as to portions of the newimage that depend on portions of the original image. The alignment of anembodiment also can include information as to the sequence by which theportions of the new image are to be updated during the in-place updateof the original image hosted in the processor-based portable device. Thedependency generation module 104 uses information of the specificstructure of the SFS as domain knowledge (e.g., information from thehint file) in performing the alignment, and the alignment is determinedrelative to the block boundaries of the images, but is not so limited.

The difference engine 106 generally determines or computes theportion-level differences between data of each new portion of the newimage and data of the original portion of the original image. Morespecifically, the difference engine 106 uses information from thedependency generation module 104 to read or gather one or more portionsof the old image on which each portion of the new image depends. Thedifference engine 106 of an embodiment computes the differences betweencontent of the new portion and content of the original portion uponwhich the new portion depends. The identified differences in databetween the original and new portions are encoded into a file that isreferred to herein as a delta file. In addition to the encodeddifferences in data between original and new portions, the delta filecan include control information like dependency information ofdependencies between new portions and original portions. Furthermore,the delta file can include verification information (e.g., checksumvalues, cyclic redundancy codes (CRCs), etc.) of the delta body, theoriginal portion of an image to be updated, and the correspondingdependency information

While the difference engine 106 described above determines differencesbetween original and new images at the portion-level, the differenceengine of alternative embodiments may determine differences using adifferent granularity (e.g., multiple portions, etc.). Furthermore,while the difference engine 106 described above generates a delta filefor each portion of a new image that is different from the portion ofthe original image on which it depends, alternative embodiments maygenerate more than one delta file for each portion or may includedifference information of multiple portions in one delta file.

The packaging engine 108 receives the delta files generated by thedifference engine 106 and assembles the delta files into a delta packageor difference package. The packaging engine 108 of an embodimentassembles the delta files into the delta package according to an updateorder or sequence, but is not so limited. The packaging engine 108 canalso perform additional operations on the delta file and/or deltapackage, for example encrypting the delta package.

While the SFS differencing system 100 described above is described asincluding the image processing module 102, dependency generation module104, difference engine 106, and packaging engine 108 as separate modulesor components, the embodiment is not so limited. Alternative embodimentsfor example can include functionality of the modules 102-108 in one ormore modules and/or distribute the functionality of modules 102-108among any number of modules or system components.

The SFS differencing and updating of embodiments include updating bywhich SFS images hosted on a device like a portable electronic deviceare updated in-place on the device, as described above. The updatingreceives the delta file at a portable device via at least one coupling.Dependent ones of the original portions hosted on the portable deviceare assembled, and at least one of the dependent original sections isidentified that corresponds to the delta file received. The updatingreconstructs at least one new portion on the portable device thatcorresponds to the delta file identified. The reconstructed new portionsof the new image are written to the ROM of the portable device.

FIG. 5 is a block diagram of an SFS differencing and updating system500, under an embodiment. The system 500 includes an SFS differencingsystem 100 and an SFS updating system 550. The SFS differencing system100 includes an image processing module 102, a dependency generationmodule 104, a difference engine 106, and a packaging engine 108, asdescribed above with reference to FIG. 1, but is not so limited. Inoperation the SFS differencing system 100 receives at least one originalSFS image 112 and at least one new SFS image 114 and performsportion-level differencing to generate a delta package 122 that includesone or more delta files as described herein.

The SFS differencing system 100 generates the delta file in aprocessor-based or computer system or running under a processor-based orcomputer system. The computer system on which or under which the SFSdifferencing system 100 runs includes any collection of computingcomponents and devices operating together, as is known in the art. Thecomputer system can also be a component or subsystem within a largercomputer system or network.

The SFS updating system 550 is hosted on a processor-based device, andreceives the delta file and performs updates to original images hosed onthe portable device. The processor-based device or system on which orunder which the SFS updating system 550 runs includes any collection ofcomputing components and devices operating together, as is known in theart. The computer system can also be a component or subsystem within alarger computer system or network. The processor-based device or systemcan include mobile devices, for example, cellular telephones, personalcomputers, portable computing devices, portable telephones, portablecommunication devices, subscriber devices or units, and personal digitalassistants (PDAs). The mobile devices, also referred to as “mobilecommunication devices,” “portable communication devices” and“communication devices,” can include all such devices and equivalents,and are not limited to communication devices that are wireless.

The SFS differencing system 100 and SFS updating system 550 communicatevia a communication path 506. The communication path 506 includes anymedium by which files are communicated or transferred betweenprocessor-based devices or systems. Therefore, the communication path506 includes wireless couplings or connections, wired couplings orconnections, and hybrid wireless/wired couplings or connections. Thecommunication path 506 also includes couplings or connections to and/orthrough networks or network components including local area networks(LANs), metropolitan area networks (MANs), wide area networks (WANs),proprietary networks, interoffice or backend networks, and the Internet.The communication path 506 can include various network components (notshown) of a communication service provider or carrier, but is not solimited. Furthermore, the communication path 506 includes removablefixed mediums like floppy disks, hard disk drives, and CD-ROM disks, aswell as telephone lines, buses, and electronic mail messages.

The delta package 122 is transferred or transmitted to the SFS updatingsystem 550 via the communication path 506. The SFS updating system 550includes an update module 552 that uses information of the delta package122 to perform an in-place update 554 of the SFS image 112P hosted onthe portable device. The update module 552 generally reconstructs thenew image 114P at the portable device by applying contents of the deltapackage 122 to portions of the original SFS image 112P hosted on theportable device. The reconstructed portions of the new image 114P arewritten to the ROM of the portable device, for example, by writing thenew image 114P over the hosted original image 112P. Upon completion ofthis SFS update process, the SFS image now hosted on the portable deviceis substantially identical to the new SFS image 114 received in thefirst SFS differencing system 100.

FIG. 6 is a flow diagram for SFS updating 600, under an embodiment. TheSFS updating 600 of an embodiment is used in resource-limited computingdevices for example. The SFS updating receives 602 the delta file at aportable device via at least one coupling. Dependent original portionsof the SFS image hosted on the portable device are assembled 604. Theupdating 600 identifies 606 at least one of the dependent originalsections that correspond to the received delta file. The updating 600reconstructs 608 at least one new portion on the portable device thatcorresponds to the delta file identified. The reconstructed new portionsof the new image are subsequently written to the memory (e.g., ROM) ofthe portable device, for example, simultaneous with or subsequent toprocessing of all delta files received in a delta package.

FIG. 7 is a flow diagram for in-place updating 700 of SFS images indevices, under an embodiment. The updating 700 can be performed forexample by an update module 552 as described above with reference toFIG. 5. The updating 700 uses the control information encoded in thereceived delta package to determine 702 that data of the delta packageis not corrupt, thereby verifying the integrity of the delta packagecontents. The integrity of each SFS image portion to be updated can alsobe verified. If any data of the delta package is corrupt, the error isreported 704.

When it is determined 702 that the data of the delta package is notcorrupt, the updating 700 sets 706 a pointer to the start of the deltapackage in order to begin the update. The portion update order anddevice block update order is implicitly encoded in the delta package ofan embodiment. It is determined 708 that a delta file is present at thestart of the update and the update proceeds. The delta file could beencrypted for security purposes and, in that case, the delta file isdecrypted (using appropriate keys) before or simultaneous with the startof the update process. The updating 700 uses information of the deltafile contents (e.g., control information) to decode 712 dependencyformation information, read 712 related portions of the original image(if necessary), unzip and/or decrypt 712 dependent portions of theoriginal image (if necessary), and assemble 712 dependent content oforiginal portions of the original image hosted on the portable device.

The updating 700 generates or reconstructs the new portion of the imagebeing updated by applying 714 the contents of the delta file to thedependent content of the original portion of the original image. The newportion once reconstructed is written to an area of RAM in the hostdevice, and is zipped and/or encrypted 714 as appropriate to the SFSimage. The new portion is placed 714 into a specific location in theblock of the original image so as to replace the original portion towhich it corresponds. After each block of the new image is created orreconstructed, that particular block is written to the ROM; alternativeembodiments may write the reconstructed blocks to the ROM at otherpoints in the update process. The update process then proceeds withprocessing the delta file for the next block.

The updating 712 and 714 described above continues until the end of thedelta package is reached and all delta files of the delta package havebeen processed. In so doing, a determination 716 is made as to whetherthe delta package includes further delta files for use in updatingadditional portions of the original image. When the delta packageincludes unprocessed delta files corresponding to additional portions ofthe original image to be updated, operation returns to read and applythese unprocessed delta files. When it is determined 716 that all deltafiles of the delta package have been processed and applied to theoriginal image, the updating 700 writes 718 the new SFS image to the ROMof the portable device. The updating of an embodiment overwrites theoriginal SFS image with the new SFS image, but alternative embodimentscan write the new SFS image to one or more other areas of ROM or otherdevice memory areas.

Referring to FIGS. 1, 2, 3, 5, 6, and 7, the operations of the processesare under control of at least one processor, but are not so limited.Those skilled in the relevant art can create source code, microcode,program logic arrays or otherwise implement the SFS differencing and/orSFS updating of an embodiment based on these flow diagrams and thedetailed description provided herein. The algorithm or routine operatingaccording to these flow diagrams is stored as program code inmachine-readable or computer-readable memory areas or devices of acomputer system (e.g., non-volatile memory) that forms part of theassociated processors, in the associated memory areas, in removablemedia, such as disks, or hardwired or preprogrammed in chips, such aselectronically erasable programmable ROM (“EEPROM”) semiconductor chips,or in any combination of these components, but is not so limited.

The SFS differencing and updating of an embodiment includes a device fordifferencing static file system images. The device of an embodimentcomprises a receiver that receives images of a static file system, theimages including an original image and a new image. The device of anembodiment also comprises a pre-processor that divides the originalimage into numerous original sections and divides the new image intonumerous new sections. The device of an embodiment comprises adependency generator that identifies dependency alignments between theplurality of original sections and the plurality of new sections. Thedevice of an embodiment comprises a difference engine that generates adelta file for at least one of the new sections, wherein the delta fileincludes differences between the at least one new sections and at leastone of the original sections on which the at least one new sectionsdepends.

The device of an embodiment further comprises a packaging engine thatassembles the delta file for the at least one of the new sectionsaccording to an update sequence.

The SFS differencing and updating of an embodiment includes a methodcomprising splitting blocks of SFS images into portions based on blockinformation and image structure information, wherein the SFS imagesinclude original images and new images. The method of an embodimentcomprises performing portion-level differencing by generating a deltafile for a new portion of the new image, wherein the delta file includesinformation of differences between the new portion and one of morecorresponding original portions of the original image. The method of anembodiment comprises transferring the delta file to a client device. Themethod of an embodiment comprises updating a target SFS image of theclient device using information of the delta file by reconstructing allportions of the new image in a device block in random access memory ofthe host device and writing the device block into read-only memory ofthe host device.

The SFS differencing and updating of an embodiment includes a methodcomprising receiving images of a static file system, the imagesincluding an original image and a new image. The method of an embodimentcomprises dividing the original image into a plurality of originalsections and divides the new image into a plurality of new sections. Themethod of an embodiment comprises identifying dependency alignmentsbetween the plurality of original sections and the plurality of newsections. The method of an embodiment comprises generating a delta filefor at least one of the new sections, wherein the delta file includesdifferences between the at least one new sections and at least one ofthe original sections on which the at least one new sections depends.

The SFS differencing and updating of an embodiment includes a systemcomprising a receiver that receives images of a static file system, theimages including an original image and a new image. The system of anembodiment comprises a pre-processor coupled to the receiver thatdivides the original image into a plurality of original sections anddivides the new image into a plurality of new sections. The system of anembodiment comprises a dependency generator coupled to the pre-processorthat identifies dependency alignments between the plurality of originalsections and the plurality of new sections. The system of an embodimentcomprises a difference engine coupled to the dependency generator thatgenerates a delta file for at least one of the plurality of new sectionsthat is different from at least one of the plurality of originalsections on which the at least one new section depends, the delta fileincluding coded differences between a new section and one or moreoriginal sections. The system of an embodiment comprises a packagingengine coupled to the difference engine that assembles the delta filesinto a delta package.

The system of an embodiment comprises an update engine in a portabledevice, wherein the portable device receives the delta package via atleast one coupling, wherein the update engine assembles dependentoriginal sections of the plurality of original sections hosted on theportable device, identifies at least one delta file of the delta packagethat corresponds to at least one of the dependent original sections, andreconstructs at least one new section that corresponds to the at leastone delta file identified.

The update engine of an embodiment receives the delta package andverifies integrity of contents of at least one delta file of the deltapackage.

The update engine of an embodiment reconstructs the at least one newsection in a first memory area of the portable device.

The first memory area of an embodiment is in random access memory (RAM).

The update engine of an embodiment continues identifying delta files ofthe delta package that correspond to at least one of the dependentoriginal sections and reconstructing new sections that correspond to thedelta files identified.

The update engine of an embodiment determines that all delta files ofthe delta package have been applied to the original sections hosted onthe portable device and in response to the determination writes thereconstructed new sections to a second memory area of the portabledevice.

The update engine of an embodiment writes each block of thereconstructed new sections to a second memory area.

The second memory area of an embodiment is in read-only memory (ROM).

The SFS differencing and updating of an embodiment includes a methodcomprising receiving images of a static file system, the imagesincluding an original image and a new image, wherein the images includea plurality of blocks. The method of an embodiment comprises splittingthe images by using information of the plurality of blocks to split theimages into a plurality of portions. The method of an embodimentcomprises determining differences between content of the images bydetermining differences between the plurality of portions of theoriginal image and the new image. The method of an embodiment comprisesgenerating a delta file that includes the differences for at least oneportion.

The method of an embodiment comprises transferring the delta file to aportable wireless device that hosts the original image.

The method of an embodiment comprises receiving the delta file at aportable device via at least one coupling. The method of an embodimentcomprises assembling dependent original portions of the plurality oforiginal portions hosted on the portable device. The method of anembodiment comprises identifying at least one of the dependent originalportions that corresponds to the delta file received. The method of anembodiment comprises reconstructing at least one new portion thatcorresponds to the at least one delta file identified.

The method of an embodiment comprises assembling a plurality of thedelta files into a delta package.

The method of an embodiment comprises transferring the delta package toa portable wireless device that hosts the original image.

The method of an embodiment comprises receiving the delta package at theportable device via at least one coupling. The method of an embodimentcomprises assembling dependent original portions of the plurality oforiginal portions hosted on the portable device. The method of anembodiment comprises identifying at least one delta file of the deltapackage that corresponds to at least one of the dependent originalportions. The method of an embodiment comprises reconstructing at leastone new portion that corresponds to the at least one delta fileidentified.

The SFS differencing and updating of an embodiment includes computerreadable media including executable instructions which, when executed ina processing system, determine differences between images by receivingimages of a static file system, the images including an original imageand a new image, wherein the images include a plurality of blocks. Themedia further determines differences between images by splitting theimages by using information of the plurality of blocks to split theimages into a plurality of portions. The media further determinesdifferences between images by determining differences between content ofthe images by determining differences between the plurality of portionsof the original image and the new image. The media further determinesdifferences between images by generating a delta file that includes thedifferences for at least one portion.

The media further determines differences between images by transferringthe delta file to a portable wireless device that hosts the originalimage.

The media further determines differences between images by receiving thedelta file at a portable device via at least one coupling. The mediafurther determines differences between images by assembling dependentoriginal portions of the plurality of original portions hosted on theportable device. The media further determines differences between imagesby identifying at least one of the dependent original portions thatcorresponds to the delta file received. The media further determinesdifferences between images by reconstructing at least one new portionthat corresponds to the at least one delta file identified.

The media further determines differences between images by assembling aplurality of the delta files into a delta package.

The media of an embodiment may transfer the delta package to a portablewireless device that hosts the original image.

The media of an embodiment receives the delta package at the portabledevice via at least one coupling. The media of an embodiment assemblesdependent original portions of the plurality of original portions hostedon the portable device. The media of an embodiment identifies at leastone delta file of the delta package that corresponds to at least one ofthe dependent original portions. The media of an embodiment reconstructsat least one new portion that corresponds to the at least one delta fileidentified.

Aspects of the SFS differencing and updating described above may beimplemented as functionality programmed into any of a variety ofcircuitry, including programmable logic devices (PLDs), such as fieldprogrammable gate arrays (FPGAs), programmable array logic (PAL)devices, electrically programmable logic and memory devices and standardcell-based devices, as well as application specific integrated circuits(ASICs). Some other possibilities for implementing aspects of the SFSdifferencing and updating include: microcontrollers with memory (such aselectronically erasable programmable read only memory (EEPROM)),embedded microprocessors, firmware, software, etc. Furthermore, aspectsof the SFS differencing and updating may be embodied in microprocessorshaving software-based circuit emulation, discrete logic (sequential andcombinatorial), custom devices, fuzzy (neural) logic, quantum devices,and hybrids of any of the above device types. Of course the underlyingdevice technologies may be provided in a variety of component types,e.g., metal-oxide semiconductor field-effect transistor (MOSFET)technologies like complementary metal-oxide semiconductor (CMOS),bipolar technologies like emitter-coupled logic (ECL), polymertechnologies (e.g., silicon-conjugated polymer and metal-conjugatedpolymer-metal structures), mixed analog and digital, etc.

Unless the context clearly requires otherwise, throughout thedescription and the claims, the words “comprise,” “comprising,” and thelike are to be construed in an inclusive sense as opposed to anexclusive or exhaustive sense; that is to say, in a sense of “including,but not limited to.” Words using the singular or plural number alsoinclude the plural or singular number respectively. Additionally, thewords “herein,” “hereunder,” “above,” “below,” and words of similarimport, when used in this application, refer to this application as awhole and not to any particular portions of this application. When theword “or” is used in reference to a list of two or more items, that wordcovers all of the following interpretations of the word: any of theitems in the list, all of the items in the list and any combination ofthe items in the list.

The above description of illustrated embodiments of the SFS differencingand updating is not intended to be exhaustive or to limit the inventionto the precise form disclosed. While specific embodiments of, andexamples for, the SFS differencing and updating are described herein forillustrative purposes, various equivalent modifications are possiblewithin the scope of the SFS differencing and updating, as those skilledin the relevant art will recognize. The teachings of the SFSdifferencing and updating provided herein can be applied to otherprocessing systems and communication systems, not only for the SFSdifferencing and updating systems described above.

The elements and acts of the various embodiments described above can becombined to provide further embodiments. These and other changes can bemade to the SFS differencing and updating in light of the above detaileddescription. Furthermore, aspects of the SFS differencing and updatingcan be modified, if necessary, to employ the systems, functions andconcepts of the various patents and applications described above toprovide yet further embodiments of the SFS differencing and updating.

In general, in the following claims, the terms used should not beconstrued to limit the SFS differencing and updating to the specificembodiments disclosed in the specification and the claims, but should beconstrued to include all processing systems that operate under theclaims to provide file differencing and updating. Accordingly, the SFSdifferencing and updating is not limited by the disclosure, but insteadthe scope of the SFS differencing and updating is to be determinedentirely by the claims.

While certain aspects of the SFS differencing and updating are presentedbelow in certain claim forms, the inventors contemplate the variousaspects of the SFS differencing and updating in any number of claimforms. For example, while only one aspect of the SFS differencing andupdating is recited as embodied in computer-readable medium, otheraspects may likewise be embodied in computer-readable medium.Accordingly, the inventors reserve the right to add additional claimsafter filing the application to pursue such additional claim forms forother aspects of the SFS differencing and updating.

1. A device for differencing static file system images, comprising: areceiver that receives images of a static file system, the imagesincluding an original image and a new image; a pre-processor thatdivides the original image into a plurality of original sections anddivides the new image into a plurality of new sections; a dependencygenerator that identifies dependency alignments between the plurality oforiginal sections and the plurality of new sections; and a differenceengine that generates a delta file for at least one of the new sections,wherein the delta file includes differences between the at least one newsections and at least one of the original sections on which the at leastone new sections depends.
 2. The device of claim 1, further comprising apackaging engine that assembles the delta file for the at least one ofthe new sections according to an update sequence.
 3. A methodcomprising: splitting blocks of SFS images into portions based on blockinformation and image structure information, wherein the SFS imagesinclude original images and new images; performing portion-leveldifferencing by generating a delta file for a new portion of the newimage, wherein the delta file includes information of differencesbetween the new portion and one of more corresponding original portionsof the original image; transferring the delta file to a client device;and updating a target SFS image of the client device using informationof the delta file by reconstructing all portions of the new image in adevice block in random access memory of the host device and writing thedevice block into read-only memory of the host device.
 4. A methodcomprising: receiving images of a static file system, the imagesincluding an original image and a new image; dividing the original imageinto a plurality of original sections and divides the new image into aplurality of new sections; identifying dependency alignments between theplurality of original sections and the plurality of new sections; andgenerating a delta file for at least one of the new sections, whereinthe delta file includes differences between the at least one newsections and at least one of the original sections on which the at leastone new sections depends.
 5. A system comprising: a receiver thatreceives images of a static file system, the images including anoriginal image and a new image; a pre-processor coupled to the receiverthat divides the original image into a plurality of original sectionsand divides the new image into a plurality of new sections; a dependencygenerator coupled to the pre-processor that identifies dependencyalignments between the plurality of original sections and the pluralityof new sections; a difference engine coupled to the dependency generatorthat generates a delta file for at least one of the plurality of newsections that is different from at least one of the plurality oforiginal sections on which the at least one new section depends, thedelta file including coded differences between a new section and one ormore original sections; and a packaging engine coupled to the differenceengine that assembles the delta files into a delta package.
 6. Thesystem of claim 5, further comprising an update engine in a portabledevice, wherein the portable device receives the delta package via atleast one coupling, wherein the update engine assembles dependentoriginal sections of the plurality of original sections hosted on theportable device, identifies at least one delta file of the delta packagethat corresponds to at least one of the dependent original sections, andreconstructs at least one new section that corresponds to the at leastone delta file identified.
 7. The system of claim 6, wherein the updateengine receives the delta package and verifies integrity of contents ofat least one delta file of the delta package.
 8. The system of claim 6,wherein the update engine reconstructs the at least one new section in afirst memory area of the portable device.
 9. The system of claim 8,wherein the first memory area is in random access memory (RAM).
 10. Thesystem of claim 8, wherein the update engine continues identifying deltafiles of the delta package that correspond to at least one of thedependent original sections and reconstructing new sections thatcorrespond to the delta files identified.
 11. The system of claim 10,wherein the update engine determines that all delta files of the deltapackage have been applied to the original sections hosted on theportable device and in response to the determination writes thereconstructed new sections to a second memory area of the portabledevice.
 12. The system of claim 11, wherein the update engine writeseach block of the reconstructed new sections to a second memory area.13. The system of claim 11, wherein the second memory area is inread-only memory (ROM).
 14. A method comprising: receiving images of astatic file system, the images including an original image and a newimage, wherein the images include a plurality of blocks; splitting theimages by using information of the plurality of blocks to split theimages into a plurality of portions; determining differences betweencontent of the images by determining differences between the pluralityof portions of the original image and the new image; generating a deltafile that includes the differences for at least one portion.
 15. Themethod of claim 14, further comprising transferring the delta file to aportable wireless device that hosts the original image.
 16. The methodof claim 14, further comprising: receiving the delta file at a portabledevice via at least one coupling; assembling dependent original portionsof the plurality of original portions hosted on the portable device;identifying at least one of the dependent original portions thatcorresponds to the delta file received; and reconstructing at least onenew portion that corresponds to the at least one delta file identified.17. The method of claim 14, further comprising assembling a plurality ofthe delta files into a delta package.
 18. The method of claim 17,further comprising transferring the delta package to a portable wirelessdevice that hosts the original image.
 19. The method of claim 18,further comprising: receiving the delta package at the portable devicevia at least one coupling; assembling dependent original portions of theplurality of original portions hosted on the portable device;identifying at least one delta file of the delta package thatcorresponds to at least one of the dependent original portions; andreconstructing at least one new portion that corresponds to the at leastone delta file identified.
 20. Computer readable media includingexecutable instructions which, when executed in a processing system,determine differences between images by: receiving images of a staticfile system, the images including an original image and a new image,wherein the images include a plurality of blocks; splitting the imagesby using information of the plurality of blocks to split the images intoa plurality of portions; determining differences between content of theimages by determining differences between the plurality of portions ofthe original image and the new image; generating a delta file thatincludes the differences for at least one portion.
 21. The media ofclaim 20, wherein the media further determines differences betweenimages by transferring the delta file to a portable wireless device thathosts the original image.
 22. The media of claim 20, wherein the mediafurther determines differences between images by: receiving the deltafile at a portable device via at least one coupling; assemblingdependent original portions of the plurality of original portions hostedon the portable device; identifying at least one of the dependentoriginal portions that corresponds to the delta file received; andreconstructing at least one new portion that corresponds to the at leastone delta file identified.
 23. The media of claim 20, wherein the mediafurther determines differences between images by assembling a pluralityof the delta files into a delta package.
 24. The media of claim 23,further comprising transferring the delta package to a portable wirelessdevice that hosts the original image.
 25. The media of claim 24, furthercomprising: receiving the delta package at the portable device via atleast one coupling; assembling dependent original portions of theplurality of original portions hosted on the portable device;identifying at least one delta file of the delta package thatcorresponds to at least one of the dependent original portions; andreconstructing at least one new portion that corresponds to the at leastone delta file identified.